A large number of architecturally visible registers are used in Image/Video processing blocks to configure various parameters. Each register can have a multitude of fields. Complex relationships often exist between these fields. These relationships need to be maintained when programming registers. Constraints or relationships are specified in the architecture specification. Designers/verification engineers, as well as application developers, need to adequately understand these constraints to correctly operate the hardware. Writing test cases by hand (especially when using assembly code) is time consuming and error prone. Test generators have been written that employ Perl or C code. However, it is very difficult to solve a large number of constraints efficiently. This leads to many lines of custom code being written for the generator.
It would be desirable to implement an automated specification based functional test generation infrastructure.